<?php



class ItemPedido
{
	var $produto;
	var $quantidade;
	var $total;
	var $opcaoPresente;
	var $tipoEmbrulho;
	var $custoEmbrulho;
	var $mensagemCartao;
	var $prazoEntrega;
	var $entregue;
	
	function ItemPedido($idProduto) {
		$produto 	= new Produto($idProduto);
		$this->setProduto($produto);
		$this->setQuantidade(1);
		$this->calculaTotal();
		$this->setOpcaoPresente(false);
		$this->setTipoEmbrulho("nada");
		$this->setMensagemCartao(null);
		$this->setEntregue(false);
	}
	
	
    /**
     * Returns $custoEmbrulho.
     * @see ItemPedido::$custoEmbrulho
     */
    public function getCustoEmbrulho()
    {
        return $this->custoEmbrulho;
    }
	
	public function getTipoEmbrulho() {
		return $this->tipoEmbrulho;
	}
	
	public function setTipoEmbrulho($tipoEmbrulho) {
		$this->tipoEmbrulho	= $tipoEmbrulho;
		$this->calculaCustoEmbrulho($tipoEmbrulho);
	}
    
    /**
     * Sets $custoEmbrulho.
     * @param object $custoEmbrulho
     * @see ItemPedido::$custoEmbrulho
     */
    public function calculaCustoEmbrulho($embrulho)
    {
    	$custo	= 0.0;
		
		if ($embrulho == "embrulho") {
			$custo	= 1.99;
		}
		if ($embrulho == "cartao") {
	    	$custo	= 0.6;	
		}
		if ($embrulho == "nada") {
			$this->setOpcaoPresente(false);
			$this->setMensagemCartao('');
		}
		
        if ($this->getOpcaoPresente()) {
        	$this->custoEmbrulho	= $custo * $this->getQuantidade();
        }
		else {
			$this->custoEmbrulho	= 0;
		}
    }
    
    /**
     * Returns $entregue.
     * @see ItemPedido::$entregue
     */
    public function getEntregue()
    {
        return $this->entregue;
    }
    
    /**
     * Sets $entregue.
     * @param object $entregue
     * @see ItemPedido::$entregue
     */
    public function setEntregue($entregue)
    {
        $this->entregue = $entregue;
    }
    
    /**
     * Returns $mensagemCartao.
     * @see ItemPedido::$mensagemCartao
     */
    public function getMensagemCartao()
    {
        return $this->mensagemCartao;
    }
    
    /**
     * Sets $mensagemCartao.
     * @param object $mensagemCartao
     * @see ItemPedido::$mensagemCartao
     */
    public function setMensagemCartao($mensagemCartao)
    {
        $this->mensagemCartao = $mensagemCartao;
    }
    
    /**
     * Returns $opcaoPresente.
     * @see ItemPedido::$opcaoPresente
     */
    public function getOpcaoPresente()
    {
        return $this->opcaoPresente;
    }
    
    /**
     * Sets $opcaoPresente.
     * @param object $opcaoPresente
     * @see ItemPedido::$opcaoPresente
     */
    public function setOpcaoPresente($opcaoPresente)
    {
        $this->opcaoPresente = $opcaoPresente;
    }
    
    /**
     * Returns $prazoEntrega.
     * @see ItemPedido::$prazoEntrega
     */
    public function getPrazoEntrega()
    {
        return $this->prazoEntrega;
    }
    
    /**
     * Sets $prazoEntrega.
     * @param object $prazoEntrega
     * @see ItemPedido::$prazoEntrega
     */
    public function calculaPrazoEntrega($CEP)
    {
    	$quintoDigito	= ($CEP/10000)%10;
		if ($quintoDigito == 0){
			$quintoDigito = 1;
		}
		$fator			= $this->getQuantidade()/10 + 1;
        $this->prazoEntrega = intval($quintoDigito * $fator, 10);
    }
    
    /**
     * Returns $produto.
     * @see ItemPedido::$produto
     */
    public function getProduto()
    {
        return $this->produto;
    }
    
    /**
     * Sets $produto.
     * @param object $produto
     * @see ItemPedido::$produto
     */
    public function setProduto($produto)
    {
        $this->produto = $produto;
    }
    
    /**
     * Returns $quantidade.
     * @see ItemPedido::$quantidade
     */
    public function getQuantidade()
    {
        return $this->quantidade;
    }
    
    /**
     * Sets $quantidade.
     * @param object $quantidade
     * @see ItemPedido::$quantidade
     */
    public function setQuantidade($quantidade)
    {
    	if ($this->getProduto()->verificaDisponibilidade($quantidade)) {
	        $this->quantidade = $quantidade;
			$this->calculaTotal();
			
			return true;
		}
		else {
			return false;
		}
    }
    
    /**
     * Returns $total.
     * @see ItemPedido::$total
     */
    public function getTotal()
    {
        return $this->total;
    }
    
    /**
     * Sets $total.
     * @param object $total
     * @see ItemPedido::$total
     */
    public function calculaTotal()
    {
        $this->total = ($this->getProduto()->getPreco()) * $this->getQuantidade();
    }

}

?>